/**
 * 图片处理工具类
 * 统一处理图片路径和显示逻辑
 */

// 默认图片列表
const DEFAULT_IMAGES = [
    '/static/img/goods/p1.jpg',
    '/static/img/goods/p2.jpg', 
    '/static/img/goods/p3.jpg',
    '/static/img/goods/p4.jpg',
    '/static/img/goods/p5.jpg',
    '/static/img/goods/p6.jpg',
    '/static/img/goods/p7.jpg',
    '/static/img/goods/p8.jpg',
    '/static/img/goods/p9.jpg',
    '/static/img/goods/p10.jpg'
];

/**
 * 处理图片URL
 * @param {string} imgPath - 图片路径
 * @param {string} defaultPath - 默认图片路径
 * @returns {string} 处理后的图片URL
 */
export function processImageUrl(imgPath, defaultPath = null) {
    // 如果图片路径为空或null，返回默认图片
    if (!imgPath || imgPath === 'null' || imgPath === 'undefined') {
        return defaultPath || getRandomDefaultImage();
    }
    
    // 如果是完整的URL（http或https），直接返回
    if (imgPath.startsWith('http://') || imgPath.startsWith('https://')) {
        return imgPath;
    }
    
    // 如果已经是完整的静态资源路径，直接返回
    if (imgPath.startsWith('/static/')) {
        return imgPath;
    }
    
    // 如果是相对路径，拼接静态资源路径
    if (imgPath.startsWith('./') || imgPath.startsWith('../')) {
        // 移除相对路径前缀
        const cleanPath = imgPath.replace(/^\.\.?\//, '');
        return `/static/img/goods/${cleanPath}`;
    }
    
    // 如果是文件名，直接拼接路径
    if (imgPath.includes('.jpg') || imgPath.includes('.png') || imgPath.includes('.jpeg') || imgPath.includes('.gif')) {
        return `/static/img/goods/${imgPath}`;
    }
    
    // 其他情况返回默认图片
    return defaultPath || getRandomDefaultImage();
}

/**
 * 获取随机默认图片
 * @returns {string} 随机默认图片路径
 */
export function getRandomDefaultImage() {
    const randomIndex = Math.floor(Math.random() * DEFAULT_IMAGES.length);
    return DEFAULT_IMAGES[randomIndex];
}

/**
 * 验证图片是否存在
 * @param {string} url - 图片URL
 * @returns {Promise<boolean>} 图片是否存在
 */
export function checkImageExists(url) {
    return new Promise((resolve) => {
        const img = new Image();
        img.onload = () => resolve(true);
        img.onerror = () => resolve(false);
        img.src = url;
    });
}

/**
 * 批量处理商品图片
 * @param {Array} goodsList - 商品列表
 * @returns {Array} 处理后的商品列表
 */
export function processGoodsImages(goodsList) {
    if (!Array.isArray(goodsList)) {
        return [];
    }
    
    return goodsList.map(goods => ({
        ...goods,
        img: processImageUrl(goods.img || goods.imgPath)
    }));
}

/**
 * 获取图片加载错误时的默认图片
 * @param {string} originalSrc - 原始图片路径
 * @returns {string} 默认图片路径
 */
export function getFallbackImage(originalSrc) {
    // 根据原始图片路径判断类型，返回相应的默认图片
    if (originalSrc && originalSrc.includes('goods')) {
        return '/static/img/goods/p1.jpg';
    }
    if (originalSrc && originalSrc.includes('category')) {
        return '/static/img/category/1.png';
    }
    if (originalSrc && originalSrc.includes('user')) {
        return '/static/img/face.jpg';
    }
    
    return '/static/img/goods/p1.jpg';
}

export default {
    processImageUrl,
    getRandomDefaultImage,
    checkImageExists,
    processGoodsImages,
    getFallbackImage
};
